The present invention relates to distributed computer networks, and more particularly, the present invention relates to a system and method for locating resources on a distributed network.
In today""s highly networked computer environments, distributed computing is critical because it allows the resources of relatively small computers to be combined to provide a more powerful overall system Distributed computing allows data and programs to be spread out, or distributed, across large networks of heterogeneous computers, in a manner that is transparent to the user. Thus, data that is too large to fit on a single computer may be broken into smaller pieces and stored on several computers, or processes that service a high volume of users may be spread out across the network to more efficiently service end-users.
Because of the need for flexibility with distributed computing environments, numerous logistical issues and problems arise. For example, while any two computers on such a network can communicate with each other on the network, the cost of communication may vary depending upon the computers involved and the topology of the communications network. Moreover, operations that appear to be fairly straightforward (e.g., processes for locating homepages on the World Wide Web) can become logistically difficult to manage where the environment is constantly changing (e.g., homepages moving to new physical locations). The problem associated with locating resources in any distributed environment is of particular concern and is addressed by this invention.
Typical distributed computing environments include clients, resource computers (e.g., servers), and resources. A resource is any entity available for a computer process to use as part of its computation. Resources may be physical (e.g., a robot arm) or logical (e.g., a database). Other examples of resources include a CD-ROM disk, a name server process, an object-oriented programming object, a location in a distributed shared memory and so on.
A resource can own another resource if it xe2x80x9ccontainsxe2x80x9d the owned resource. A resource contains another resource if performing a physical operation on the container (e.g., destroying it, etc), implies performing the same operation on the contained resource. For instance, a physical disk containing a collection of files owns all of the files on the disk or a region of distributed shared memory owns an object-oriented programming object allocated in the memory region, etc. For a resource to own another resource, the owning resource must be less abstract than the owned resource. Thus, physical resources, (e.g., a computer) can own logical resources, (e.g., a name-server process). Since physical resources (e.g., disks, robot arms, etc.) are not abstractions, they do not have owners.
At any point in time at most one computer in the distributed, computing environment controls each resource. The computer controlling a resource is the computer to which the resource is attached and the controlling computer has responsibility for mediating and enabling non-local accesses to the resource. Moreover, at any instance in time a resource need not be controlled (e.g., consider the case of a disk that is in a desk drawer). If a computer controls a given resource r, it also controls all of the resources owned by r. A resource is born on the computer which first controlled the resource.
A resource server is a computer that controls one or more resources and which enables other computers in the distributed computing environment to access (a non-empty subset of) the resources it controls. Of concern here, are those resources which can be potentially be made accessible to other computers via resource servers.
Migration is a persistent change of either the owner or controller of a given resource. The controller of a resource is changed by detaching it from one computer and reattaching it to another (e.g., by physically moving a diskette from a drive on one machine to a drive on another machine). The owner of a (logical) resource is changed by destructively copying the logical resource (e.g., moving the backing store for a region of distributed shared memory from one device to another).
As noted above, tracking and locating resources can become logistically difficult on large distributed computing networks where migration occurs. Moreover, given the numerous places a resource could potentially migrate to (e.g., consider the web), the costs involved in locating resources can become practically unbounded. None the less, in distributed systems, clients often need to quickly find the machine controlling a remote resource.
One method of locating resources involves the utilization of a resource identifier (RID) to identify the resource. That is, if every resource has a unique identifier, the location of the resource could be encoded in the RID. However, because flexible distributed systems sometimes must change the machine controlling a resource, a system of dealing with migration must be employed. Previous approaches to finding resources that may migrate may suffer from numerous drawbacks including the potential of requiring unbounded communications, the need to support distributed garbage collection to (transparently) update existing RID""s, the need to include a dedicated server, or the need to maintain a continued connection between the resource and its creating server.
The following documents each describe some form of resource tracking/locating, but each is subject to some of the above-mentioned limitations. J. Chase, H. Levy, E. Lazowska and M. Baker-Harvey. xe2x80x9cLightweight shared objects in a 64-bit operating system,xe2x80x9d OOPSLA 92: Conference on Object-Oriented Programming Systems, Languages and Applications, ACM/SIGPLAN 1992. p.397.; M. Day, B. Liskov, U. Maheshwari, and A. Meyers. xe2x80x9cReferences to remote mobile objects in Thor.xe2x80x9d ACM Letters on Programming Languages and Systems, 2(1-4), Mar.-Dec. 1993. p115; J. Ioannidis, D. Duchamp, and G. Maguire, Jr. xe2x80x9cIP-based protocols for mobile internetworkingxe2x80x9d Technical Report CUCS-006-91, Department of Computer Science, Columbia University 1991; and xe2x80x9cUniversal Networked Objects,xe2x80x9d CORBA 2.0/Interoperability, OMG TC Document 95.3.xx, Mar. 20, 1995.
Distributed computing environments, including the internet, world wide web, intranets and large corporate networks, will continue to play a dominate role in computing. Efficient management of computing resources will be a primary challenge in enabling such environments to fulfill the needs of the end-users. Thus, a need exists to provide an efficient system of tracking and locating resources. The aforementioned art is hereby incorporated by reference.
The present invention provides a method and system for managing resources in a distributed computing environment. Disclosed is (1) a system and means for building resource identifiers (RIDs), (2) a distributed process structure for managing information regarding the location of computers and resources, and (3) a set of protocols that enable mapping from a RID to the machine controlling a resource in a small, bounded number of messages. These functional aspects are referred to herein collectively as the xe2x80x9cDistributed Location Servicesxe2x80x9d (DLS).
The present invention incorporates the notion of xe2x80x9clogical processes,xe2x80x9d which were described in detail in the related application xe2x80x9cDistributed Computing Using Logical Processes.xe2x80x9d The logical processes disclosures teaches, among other things, a logical addressing/mapping means which will allow the physical address of a device to be modified without modifying the resource identifier. Moreover, logical processes provide a flexible means for implementing the above-mention distributed process structure or LLSP""s, described in more detail below. While the invention is disclosed in a generic sense it is understood that the invention may apply to any distributed computing environment, including the world wide web, the internet, intranets, etc.
In accordance with the above, it is an advantage of the present invention to provide a highly scalable system for locating resources that may migrate.
In accordance with the above, it is a further advantage of the present invention to provide a small, bounded number of messages to find the controller of a resource.
In accordance with the above, it is a further advantage of the present invention to allow for resource migration without maintaining a connection with the creating server.
In accordance with the above, it is a further advantage of the present invention to provide a system that does not require garbage collection.
In accordance with the above, it is a further advantage of the present invention to provide a system that entails no overhead for access to local resources.
In accordance with the above, it is a further advantage of the present invention to provide a system that has minimal memory requirements.